﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace QuanLyThuChi
{
    public partial class QuanLyChi : UserControl
    {
        public QuanLyChi()
        {
            InitializeComponent();
        }
        public_function pf = new public_function();
        connect cn = new connect();
        bool them = true;
        int vitri = 0;
        private void load_dulieu()
        {
            gridQuanLyChi.DataSource = pf.getData("Chi_DsChi");
            cobLoaiChi.DataSource = pf.getData("Loai_DS");
            cobLoaiChi.ValueMember = "MaLoai";
            cobLoaiChi.DisplayMember = "TenLoai";

            cobDVT.DataSource = pf.getData("DVT_DS");
            cobDVT.ValueMember = "MaDVT";
            cobDVT.DisplayMember = "TenDVT";
            /*
            cobTimLoai.DataSource = pf.getData("Loai_DS");
            cobTimLoai.ValueMember = "MaLoai";
            cobTimLoai.DisplayMember = "TenLoai";
             * */
        }
        private void QuanLyChi_Load(object sender, EventArgs e)
        {
            load_dulieu();
        }

        private void gridQuanLyChi_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                gridQuanLyChi.CurrentRow.Selected = true;
                txtMaChi.Text = gridQuanLyChi.CurrentRow.Cells["MaChi"].Value.ToString();
                dtNgayChi.Value = Convert.ToDateTime(gridQuanLyChi.CurrentRow.Cells["NgayChi"].Value);
                cobLoaiChi.Text = gridQuanLyChi.CurrentRow.Cells["TenLoai"].Value.ToString();
                cobDVT.SelectedValue = gridQuanLyChi.CurrentRow.Cells["DVT"].Value.ToString();
                txtSoLuong.Text = gridQuanLyChi.CurrentRow.Cells["SoLuong"].Value.ToString();
                txtDonGia.Text = gridQuanLyChi.CurrentRow.Cells["DonGia"].Value.ToString();

            }
            catch
            {
            }
        }
        private void battatcontrol(bool val)
        {
            dtNgayChi.Enabled = val;
            cobDVT.Enabled = val;
            cobLoaiChi.Enabled = val;
            txtSoLuong.Enabled = val;
            txtDonGia.Enabled = val;
            txtGhiChu.Enabled = val;
            btnThem.Enabled = !val;
            btnSua.Enabled = !val;
            btnXoa.Enabled = !val;
            gridQuanLyChi.Enabled = !val;
            btnLuu.Enabled = val;
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            battatcontrol(true);
            txtSoLuong.Text = "";
            txtDonGia.Text = "";
            txtGhiChu.Text = "";
            them = true;
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            battatcontrol(true);
            them = false;
            vitri = gridQuanLyChi.CurrentRow.Index;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (dtNgayChi.Value > DateTime.Now)
            {
                MessageBox.Show("Ngày thu không đúng","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);                
            }
            else if (pf.kiemTraTonTai(cobLoaiChi.Text, "Loai_KiemTraTonTaiLoai","tenloai") == false)
            {
                MessageBox.Show("Nhập loại không đúng","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                cobLoaiChi.Focus();
            }
            else if (pf.kiemTraTonTai(cobDVT.Text, "DVT_KiemTraTonTai", "dvt") == false)
            {
                MessageBox.Show("Nhập đơn vị tính không đúng", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cobDVT.Focus();
            }
            else if (txtSoLuong.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập số lượng","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error );
                txtSoLuong.Focus();
            }
            else if (txtDonGia.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập đơn giá", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtDonGia.Focus();
            }
            else
            {
                if (them == true)
                {
                    OleDbCommand cmd = new OleDbCommand("Chi_Insert", cn.ketnoi());
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new OleDbParameter("ngaychi", OleDbType.Date)).Value = dtNgayChi.Value.Date;
                    cmd.Parameters.Add(new OleDbParameter("loaichi", OleDbType.Integer)).Value = cobLoaiChi.SelectedValue;
                    cmd.Parameters.Add(new OleDbParameter("dvt", OleDbType.Integer)).Value = cobDVT.SelectedValue;
                    cmd.Parameters.Add(new OleDbParameter("soluong", OleDbType.Double)).Value = txtSoLuong.Text;
                    cmd.Parameters.Add(new OleDbParameter("dongia", OleDbType.Double)).Value = txtDonGia.Text;
                    cmd.Parameters.Add(new OleDbParameter("ghichu", OleDbType.LongVarChar)).Value = txtGhiChu.Text;
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        MessageBox.Show("Thêm thu thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        load_dulieu();
                        battatcontrol(false);
                    }
                    else
                    {
                        MessageBox.Show("Lỗi trong quá trình thêm", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        load_dulieu();
                        battatcontrol(false);

                    }

                }
                else
                {
                    if (txtMaChi.Text == "")
                    {
                        MessageBox.Show("Bạn chưa chọn dữ liệu nào để cập nhật", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        OleDbCommand cmd_update = new OleDbCommand("Chi_Update", cn.ketnoi());
                        cmd_update.CommandType = CommandType.StoredProcedure;
                        cmd_update.Parameters.Add(new OleDbParameter("ngaychi", OleDbType.Date)).Value = dtNgayChi.Value.Date;
                        cmd_update.Parameters.Add(new OleDbParameter("loaichi", OleDbType.Integer)).Value = cobLoaiChi.SelectedValue;
                        cmd_update.Parameters.Add(new OleDbParameter("dvt", OleDbType.Integer)).Value = cobDVT.SelectedValue;
                        cmd_update.Parameters.Add(new OleDbParameter("soluong", OleDbType.Double)).Value = txtSoLuong.Text;
                        cmd_update.Parameters.Add(new OleDbParameter("dongia", OleDbType.Double)).Value = txtDonGia.Text;
                        cmd_update.Parameters.Add(new OleDbParameter("ghichu", OleDbType.LongVarChar)).Value = txtGhiChu.Text;
                        cmd_update.Parameters.Add(new OleDbParameter("machi", OleDbType.Integer)).Value = txtMaChi.Text;
                        if (cmd_update.ExecuteNonQuery() == 1)
                        {
                            MessageBox.Show("Cập nhật thông tin thành Công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            load_dulieu();
                            gridQuanLyChi.CurrentCell = gridQuanLyChi.Rows[vitri].Cells[0];
                            gridQuanLyChi.Rows[vitri].Selected = true;
                            battatcontrol(false);
                        }

                    }
                }
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            load_dulieu();
            //checkTimLoai.Checked = false;
            //checkTimNgay.Checked = false;
            battatcontrol(false); 

        }
        private void tinhtien()
        {
            if (txtDonGia.Text == "")
            {
                txtThanhTien.Text = "0";
            }
            else if (txtSoLuong.Text == "")
            {
                txtThanhTien.Text = "0";
            }
            else
            {

                txtThanhTien.Text = pf.thanhtien(double.Parse(txtDonGia.Text), double.Parse(txtSoLuong.Text)).ToString();
            }

            
        }

        private void txtSoLuong_TextChanged(object sender, EventArgs e)
        {
            tinhtien();
            if (txtSoLuong.Text != "")
            {
                txtSoLuong.Text = String.Format("{0:N0}", double.Parse(txtSoLuong.Text));
                txtSoLuong.SelectionStart = txtSoLuong.Text.Length;
            }
        }

        private void txtDonGia_TextChanged(object sender, EventArgs e)
        {
            tinhtien();
            if (txtDonGia.Text != "")
            {
                txtDonGia.Text = String.Format("{0:N0}", double.Parse(txtDonGia.Text));
                txtDonGia.SelectionStart = txtDonGia.Text.Length;
            }
        }

        private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtDonGia_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtThanhTien_TextChanged(object sender, EventArgs e)
        {
            txtThanhTien.Text = String.Format("{0:N0}", double.Parse(txtThanhTien.Text));
            txtThanhTien.SelectionStart = txtThanhTien.Text.Length;
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc chắn muốn xóa không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                OleDbCommand cmd = new OleDbCommand("Chi_Delete", cn.ketnoi());
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OleDbParameter("machi", OleDbType.Integer)).Value = txtMaChi.Text;
                if (cmd.ExecuteNonQuery() == 1)
                {
                    MessageBox.Show("Bạn đã xóa dữ liệu thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    load_dulieu();
                    battatcontrol(false);
                }
            }
        }

        private void btnThemNhanhLoai_Click(object sender, EventArgs e)
        {
            frmQuanLyLoai frm = new frmQuanLyLoai();
            frm.ShowDialog();
            load_dulieu();
        }

        private void btnThemnhanhDVT_Click(object sender, EventArgs e)
        {
            frmQuanLyDVT frm = new frmQuanLyDVT();
            frm.ShowDialog();
            load_dulieu();
        }
    }
}
